package com.example.mapper;

import com.example.entity.SupplyProduct;
import com.example.vo.SupplyProductVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface SupplyProductMapper {
    
    /**
     * 插入供货商品
     */
    int insert(SupplyProduct supplyProduct);
    
    /**
     * 根据ID删除
     */
    int deleteById(Long id);
    
    /**
     * 根据ID更新
     */
    int updateById(SupplyProduct supplyProduct);
    
    /**
     * 根据ID查询
     */
    SupplyProduct selectById(Long id);
    
    /**
     * 根据ID查询VO
     */
    SupplyProductVO selectVOById(Long id);
    
    /**
     * 条件查询列表
     */
    List<SupplyProduct> selectList(@Param("supplyProduct") SupplyProduct supplyProduct);
    
    /**
     * 条件查询VO列表
     */
    List<SupplyProductVO> selectVOList(@Param("supplyProduct") SupplyProduct supplyProduct);
    
    /**
     * 分页查询
     */
    List<SupplyProductVO> selectPage(@Param("offset") int offset, @Param("limit") int limit, @Param("keyword") String keyword);
    
    /**
     * 分页查询时统计总数（支持关键词搜索）
     */
    long selectPageCount(@Param("keyword") String keyword);
    
    /**
     * 统计总数
     */
    long selectCount(@Param("supplyProduct") SupplyProduct supplyProduct);
    
    /**
     * 根据商品编号查询
     */
    SupplyProduct selectByProductCode(String productCode);
    
    /**
     * 根据商品编号查询（排除指定ID）
     */
    SupplyProduct selectByProductCodeExcludeId(@Param("productCode") String productCode, @Param("excludeId") Long excludeId);
    
    /**
     * 根据商品编号前缀统计数量
     */
    int countByProductCodePrefix(@Param("prefix") String prefix);
} 